package com.cskaoyan.javase.oop.homework6;

/**
 * @description: 作业1
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 1.定义一个Student类：
 *    a. 要求包含4个成员变量 String name, int age, String gender, int stuId
 *    b. 分别定义5个构造方法
 *       分别为无参构造
 *      初始化name成员变量值的1参构造方法
 *      初始化name 和 stuId两个成员变量值的2参构造方法
 *      初始化name，age，gender三个成员变量值的3参构造方法
 *      初始化name，age， gender，stuId这4个成员变量值的4参构造方法
 *    c. 在定义一个成员方法print()，打印这个学生类对象信息
 *
 * 2,在第一题的基础上，创建两个Student对象分别为stu1和stu2
 *     要求stu1对象的四个成员变量name, age, gender, stuId的值分别为“张三”,18,"男", 1
 *     要求stu2对象的四个成员变量name, age, gender, stuId的值分别为“李四”,25,"女", 2
 *     然后在两个对象上调用打印print()方法
 *     两次调用方法输出的结果相同吗？
 *     为什么？
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        //创建对象
        Student s1 = new Student("法外狂徒-张三", 18, "男", 1);
        Student s2 = new Student("尼古拉斯-赵四", 25, "女", 2);

        s1.print();
        s2.print();

    }
}

class Student {

    //涉及顺序问题，一般来说定义类，成员变量在最上面。构造方法在中间，最后去写成员方法
    String name;
    int age;
    String gender; //性别 sex/gender  布尔类型的isMale或者isFemale
    //根据阿里巴巴开发规范，不建议布尔类型用isXxx的形式去定义名字
    //因为某些框架中，会有冲突，get set方法
    int stuId;

    public Student() {
    }

    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public Student(String name, int stuId) {
        this.name = name;
        this.stuId = stuId;
    }

    public Student(String name) {
        this.name = name;
    }

    public Student(String name, int age, String gender, int stuId) {
        //this(name) 就调用String的构造方法
        this(name);
        this.age = age;
        this.gender = gender;
        this.stuId = stuId;
    }

    public void print() {
        //没有写this，其实是this.name的简写
        System.out.println("该学生姓名为" + this.name + "性别是" + gender);
    }


}
